Cellular and wireless communication technologies have seen explosive growth over the past several years. This growth has been fueled by better communications, hardware, larger networks, and more reliable protocols. Wireless service providers are now able to offer their customers an ever-expanding array of features and services, and provide users with unprecedented levels of access to information, resources, and communications. To keep pace with these service enhancements, mobile electronic devices (e.g., cellular phones, tablets, laptops, etc.) have become more powerful than ever. Mobile device users now routinely execute multiple complex and power intensive software applications and services on their mobile devices, all without a wired connection to a power source. As a result, a mobile device's battery life and power consumption characteristics are becoming ever more important considerations for consumers of mobile devices.
Increased battery life maximizes the user's experience by allowing users to do more with a wireless device for longer periods of time. To maximize battery life, mobile devices typically attempt to optimize mobile device power consumption using dynamic voltage and frequency scaling techniques. These techniques allow programmable device pipelines to run in a lower power and/or lower performance mode when non-critical applications or low load conditions are detected. For example, a mobile device may be configured to place one or more processors and/or resources in a low power state when idle. While these techniques may improve the overall battery performance, they require that device processors and/or resources be placed in an idle state and cannot improve the power consumption characteristics of individual applications or processes executing on the device. Thus, existing techniques attempt to tailor the behavior of the mobile device to the software applications running on the device, instead of tailoring the applications to consume less energy on the device. Since many modern software applications require power intensive processing, reducing the power consumption of the processes executing on the device, without altering the performance of the processes, will greatly enhance the user experience.